package wh.threadlocal;

/**
 * @author: wh(1835734390 @ qq.com)
 * @date: 2022/4/27 9:55
 * @description:我们让这10个线程各自有一个SimpleDateFormat对象（即，因为线程池同时会有10个线程并发处理任务，
 * 那么我们就创建10个SimpleDateFormat对象，一个线程分一个）
 * @version:
 */

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadLocalNormalUsage05 {

    public String date(int seconds) {
        //seconds单位是秒，而Date()的参数要求是毫秒；所这儿乘1000了；
        //【这个返回的日期】=【1970.1.1 00:00:00】+【1000*seconds】；（PS：如果在东八区的话，就是【1970.1.1 08:00:00】）
        Date date = new Date(1000 * seconds);
        //定义时间显示格式
//        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        SimpleDateFormat dateFormat = ThreadSafeFormatter.dateFormatThreadLocal.get();
//        SimpleDateFormat dateFormat = ThreadSafeFormatterWithLambda.dateFormatThreadLocal.get();
        return dateFormat.format(date);
    }

    //创建一个线程池
    public static ExecutorService threadPool = Executors.newFixedThreadPool(10);


    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i <100 ; i++) {
            int finalI = i;
            //然后，把任务放到线程池中；
            threadPool.submit(new Thread(new Runnable() {
                @Override
                public void run() {
                    String date = new ThreadLocalNormalUsage05().date(finalI);
                    System.out.println(Thread.currentThread().getName() + date);
                }
            }));
        }
        threadPool.shutdown();//最后，记得把线程池给关闭
    }
}